WITH Note.io;

PACKAGE BODY Matiere.IO IS


   PROCEDURE Get(X : OUT Matiere) IS
   BEGIN
      Get(Ada.Text_IO.Current_Output,X);
   END Get;

   PROCEDURE Get(F : Ada.Text_IO.File_TYPE ;X : OUT Matiere) IS
   BEGIN
      Ada.Text_IO.Put("Saisie de l'intitule de la matiere : ");
      DECLARE
         un_intitule : constant string := Ada.Text_IO.Get_Line;
      BEGIN
         LOOP
            Ada.Text_IO.Put("Saisie du coefficient de la matiere 1 <= x <= 8 : ");
            DECLARE
               Un_Coefficient : Coefficient := 1;
            BEGIN
               Un_Coefficient := Coefficient'Value (Ada.Text_IO.Get_Line);
               DECLARE
                  une_note : Note.Note := note.CreerNote;
                  une_matiere : Matiere(un_intitule'Length);
               BEGIN
                  une_matiere.Un_Coefficient := Un_Coefficient;
                  une_matiere.Une_Note := une_note;
                  une_matiere.Un_Intitule := un_intitule;
                  X := une_matiere;
                  exit;
               END;
            EXCEPTION
               WHEN others=>
                  Ada.Text_IO.Put_Line("Valeur incorrecte");
            END;
         END LOOP;
      END;
   END Get;

   PROCEDURE GetFichier(F : Ada.Text_IO.File_TYPE ; X : OUT Matiere) IS
      un_intitule : constant string := Ada.Text_IO.Get_Line(F);
      Un_Coefficient : Coefficient := Coefficient'Value (Ada.Text_IO.Get_Line(F));
      une_matiere :  Matiere(un_intitule'Length);
   BEGIN
      une_matiere.Un_Coefficient := Un_Coefficient;
      Note.io.GetFichier(F,une_matiere.Une_Note);
      une_matiere.Un_Intitule := un_intitule;
      X := une_matiere;
   END GetFichier;


   PROCEDURE Put(X : IN Matiere) IS
   BEGIN
      Put(Ada.Text_IO.Current_Output,X);
   END Put;

   PROCEDURE Put(F : Ada.Text_IO.File_TYPE ; X : IN Matiere)IS
   BEGIN
      Ada.Text_IO.put(F,"Intitule : ");
      Ada.text_IO.Put_Line(F,X.Un_Intitule);
      Ada.Text_IO.put(F,"Coefficient : ");
      Ada.Text_IO.Put_Line(F,Coefficient'Image(X.Un_Coefficient));
      Note.io.Put(F,X.Une_Note);
   END Put;

   PROCEDURE PutFichier(F : Ada.Text_IO.File_TYPE ; X : IN Matiere) IS
   BEGIN
      Ada.text_IO.Put_Line(F,X.Un_Intitule);
      Ada.Text_IO.Put_Line(F,Coefficient'Image(X.Un_Coefficient));
      Note.io.PutFichier(F,X.Une_Note);
   END PutFichier;


END Matiere.io;
